package site.isscloud.project.service;

import site.isscloud.project.domain.DeviceChannel;
import site.isscloud.project.domain.PjRealtimeTemperatureData;
import site.isscloud.project.domain.TemperatureOverview;
import site.isscloud.project.mqtt.dto.TemperatureMqttDto;

import java.util.List;

/**
 * 实时温度监测Service接口
 */
public interface IPjRealtimeTemperatureService {

    /**
     * 处理MQTT接收到的温度数据
     */
    void processMqttTemperatureData(TemperatureMqttDto mqttData);

    /**
     * 根据设备编号和通道号获取米标范围
     */
    Integer[] getMeterRangeByDeviceChannel(String deviceNo, Integer channelNo);

    List<DeviceChannel> getDeviceChannels();

    /**
     * 获取所有设备通道组合
     */
    List<DeviceChannel> selectDistinctDeviceChannels();

    /**
     * 获取温度数据概览
     */
    TemperatureOverview getTemperatureOverview();

    /**
     * 获取实时温度数据
     */
    List<PjRealtimeTemperatureData> getRealtimeTemperatureData(String deviceNo, Integer channelNo);

    /**
     * 获取温度趋势数据
     */
    List<PjRealtimeTemperatureData> getTemperatureTrendData(String deviceNo, Integer channelNo,
                                                  String startTime, String endTime,
                                                  String timeType);

    /**
     * 获取指定米标范围的温度数据
     */
    List<PjRealtimeTemperatureData> getMeterRangeTemperatureData(String deviceNo, Integer channelNo,
                                                       Integer startMeter, Integer endMeter);

    /**
     * 获取最新温度数据
     */
    PjRealtimeTemperatureData getLatestTemperatureData(String deviceNo, Integer channelNo);

    /**
     * 新增实时温度数据
     */
    int insertPjRealtimeTemperatureData(PjRealtimeTemperatureData pjRealtimeTemperatureData);

    /**
     * 批量新增实时温度数据
     */
    int batchInsertPjRealtimeTemperatureData(List<PjRealtimeTemperatureData> pjRealtimeTemperatureDataList);
}